package 寒假刷题;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;

public class 二倍数对数组 {
    public boolean canReorderDoubled(int[] arr) {
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i : arr) {
            map.put(i,map.getOrDefault(i,0)+1);
        }
        //如果零的个数为奇数，返回false
        if (map.getOrDefault(0,0)%2!=0)
            return false;
        ArrayList<Integer> list = new ArrayList<>();
        for (Integer integer : map.keySet()) {
            list.add(integer);
        }
        Collections.sort(list,(a,b)->Math.abs(a)-Math.abs(b));
        for (Integer i : list) {
            if (map.getOrDefault(2*i,0)<map.get(i))
                return false;
            map.put(2*i,map.getOrDefault(2*i,0)-map.get(i));
        }
        return true;
    }
}
